
var app,observer,config;
//配置文件(必须是带mode（开发环境：可选值，debug 本地开发模式，及http获取本地模拟数据、dev 测试环境、pro 生产环境）、debug、dev、pro)
config = {
    mode:'debug',
    debug:{
        http:'/assets/js/db.json'
    },
    dev:{
        http:'http://127.0.0.1:8080/'
    },
    pro:{
        http:'http://www.app.com/'
    }
}
//获取app全局对象
app = new App({config:config,mode:'debug'});
//获取配置
config = app.getConfig();
//创建消息中心
observer = app.Observer();
//设置http默认配置
app.Request.setConfig({
    baseUrl:config.http,
    async:true,
    complete:function(res){
        //所有请求完成（无论成功或者失败都会执行）都会在这里发生回调，这里主要处理请求失败
        var status = res.status;
        if(status != 200){
            alert('失败')
        }else{
            console.log('complete',res.responseJSON);
        }
    }
})
/**
 * 注册首页面
 */
Page({
    /**
     * 指定页面(暂时为注册页面html的名字，比如index.html的命名为index.html,注意暂时不可以重名)
     */
    name:'index.html',

    /**
     * 页面的初始数据
     */
    data:{
        name:null,
        fsm:null
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        console.log('options',options)
        var data = this.data;
        var params = options.params;
        data.name = params.name;
        this.getData();
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {
        console.log('加载完成')
        var data = this.data;
        //1秒后向消息中心发布bind消息
        setTimeout(function(){
            observer.publish('bind',12);
        },1000)
        //向消息中心订阅bind消息
        observer.subscribe('bind',this.bind)
        observer.subscribe('bind',this.bind2)
        //取消bind消息的订阅
        observer.unsubscribe('bind',this.bind2);

        //创建有限状态机
        data.fsm = app.StateMachine.created({
            state:'0',
            transitions:[
                {
                    state:'0',
                    fun:this.transition1
                },
                {
                    state:'1',
                    fun:this.transition2
                },
                {
                    state:'2',
                    fun:this.transition3
                }
            ]
        });
    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {
        console.log('页面卸载')    
    },

    /**
     * 注册业务类型函数
     */
    methods:{
        //http请求
        getData:function(){
            var data = this.data;
            var name = data.name;
            app.request({url:'login',type:'get',data:{name:name}}).then(function(res){
                console.log('then',res)
            })
            app.get({url:'set/password',type:'get',data:{name:name}}).then(function(res){
                console.log('then',res)
            }).finally(function(res){
                console.log('23432423',res)
            });
        },
        bind:function(){
            //业务代码
            console.log('bind订阅成功')
        },
        bind2:function(){
            //业务代码
            console.log('bind2订阅成功')
        },
        btn1:function(){
            var data = this.data;
            var fsm = data.fsm;
            fsm.setState('0').start(function(){
                console.log('1状态开始了')
            }).end(function(){
                console.log('1状态结束了')
            })
        },
        btn2:function(){
            var data = this.data;
            var fsm = data.fsm;
            fsm.setState('1').start(function(){
                console.log('2状态开始了')
            }).end(function(){
                console.log('2状态结束了')
            })
        },
        btn3:function(){
            var data = this.data;
            var fsm = data.fsm;
            fsm.setState('2').start(function(){
                console.log('3状态开始了')
            }).end(function(){
                console.log('3状态结束了')
            })
        },
        transition1:function(event){
            //状态开始
            event.start();
            $('.finite-state').animate({
                left:'100px'
            },100,function(){
                //状态结束
                event.end();
            })
        },
        transition2:function(event){
            //状态开始
            event.start();
            $('.finite-state').animate({
                left:'200px'
            },500,function(){
                //状态结束
                event.end();
            })
        },
        transition3:function(event){
            //状态开始
            event.start();
            $('.finite-state').animate({
                left:'0'
            },200,function(){
                //状态结束
                event.end();
            })
        }
    }
})

/**
 * 注册第二个页面
 */
Page({
    /**
     * 指定页面(暂时为注册页面文件所在的相对路径，比如index.html的命名为index.html，index/index.html则命名为index/index.html)
     */
    name:'second.html',

    /**
     * 页面的初始数据
     */
    data:{
        name:null,
        el:{}
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        console.log('options',options)
        var data = this.data;
        var params = options.params;
        data.name = params.name;
        this.add();
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {
        console.log('加载完成')
        var el = this.data.el;
        var btn = $('.btn');
        // btn.click(this.back);
        el.btn = btn;
    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {
        console.log('页面卸载')    
    },

    /**
     * 注册业务类型函数
     */
    methods:{
        back:function(event){
            window.history.back();
        },
        add:function(){
            console.log(this.data.name)
        }
    },
    
})